package com.kgame5.xtank3d.helper {
import com.kgame5.xtank3d.vo.level.CorpsVO;
import com.kgame5.xtank3d.vo.level.LevelVO;
import com.kgame5.xtank3d.vo.level.TankBornVO;
import com.kgame5.xtank3d.vo.tank.AIMetaVO;
import com.kgame5.xtank3d.vo.tank.BodyMetaVO;

/**
 * @author kk
 
 <?xml version="1.0" encoding="UTF-8" ?>
<level>
	<map_id value="22"/>
	<!--定义ai,坦克体质等-->
	<def>
		<!--定义坦克的AI-->
		<ai_meta_list>
			<!--coin是击毁其之后得到的钱数-->
			<ai_meta meta_id="1" coin="10">
				<mov_think_interval_min value="50"/>
				<mov_think_interval_max value="100"/>
				<mov_action_rate_wander value="20"/>
				<mov_action_rate_hunt value="70"/>
				<mov_wander_dur_min value="1000"/>
				<mov_wander_dur_max value="2000"/>
				<hunt_dur_min  value="20"/>
				<hunt_dur_max value="20"/>
				<mov_hunt_aim_dist value="7"/>
				<mov_hunt_hp_rate value="7"/>
				<atk_think_interval_min value="1000"/>
				<atk_think_interval_max value="2000"/>
				<atk_action_rate_just_fire value="20"/>;
				<atk_action_rate_kill_fire value="20"/>;
				<atk_alarm_range value="40"/>
				<test_hit_dur_ms value="500"/>
			</ai_meta>
		</ai_meta_list>
		<!--定义坦克的不同体质，有的强壮有的弱小.注意程序会根据这个来加载坦克资源-->
		<body_meta_list>
			<!--注意metaID是坦克类型 mov是常规移动速度，kill_mov是杀戮时的移动-->
			<body_meta meta_id="2" coin="20">
				<MOV value="8"/>
				<cannonY value="8"/>
				<ReloadShotMS value="8"/>
			</body_meta>
		</body_meta_list>
	</def>
	<!--敌人的集群-->
	<corps_list>
		<corps id="1" name="巡逻部队" detail="弱智的一支部队">
			<!--敌人的集群,id="null"表示自动生成 appeartime表示从上次出现敌人之后，多长时间出现-->
			<tank id="null" ai_id="1" body_id="2" born_time_gap="0" born_posi_id="1"/>
			<tank id="null" ai_id="1" body_id="2" born_time_gap="0" born_posi_id="2"/>
			<tank id="null" ai_id="1" body_id="2" born_time_gap="0" born_posi_id="3"/>
			<tank id="null" ai_id="1" body_id="2" born_time_gap="1000" born_posi_id="4"/>
			<tank id="null" ai_id="1" body_id="2" born_time_gap="1000" born_posi_id="2"/>
		</corps>
		<corps id="1" name="迅猛的部队" detail="强悍军团登场">
			<!--敌人的集群,id="null"表示自动生成 appeartime表示从上次出现敌人之后，多长时间出现-->
			<tank id="null" ai_id="1" body_id="2" born_time_gap="1000"  born_posi_id="1"/>
			<tank id="null" ai_id="1" body_id="2" born_time_gap="1000"  born_posi_id="2"/>
			<tank id="null" ai_id="1" body_id="2" born_time_gap="0"  born_posi_id="3"/>
			<tank id="null" ai_id="1" body_id="2" born_time_gap="0"  born_posi_id="4"/>
			<tank id="null" ai_id="1" body_id="2" born_time_gap="0"  born_posi_id="1"/>
			<tank id="null" ai_id="1" body_id="2" born_time_gap="1000"  born_posi_id="2"/>
			<tank id="null" ai_id="1" body_id="2" born_time_gap="0"  born_posi_id="4"/>
			<tank id="null" ai_id="1" body_id="2" born_time_gap="0"  born_posi_id="3"/>
			<tank id="null" ai_id="1" body_id="2" born_time_gap="0"  born_posi_id="2"/>
		</corps>
	<corps_list>
</level>
 * 
 */
public class LevelXMLReader {
	public function read(myXML:XML):LevelVO{
		
		var vo:LevelVO=new LevelVO();
		
		vo.mapID=parseInt(myXML.map_id.@value);
		vo.time=parseInt(myXML.time.@value);
		for each(var corpsXML:XML in myXML.corps_list.corps){
			var corpsVO:CorpsVO=new CorpsVO();
			corpsVO.id=parseInt(corpsXML.@id);
			corpsVO.name=corpsXML.@name;
			corpsVO.detail=corpsXML.@detail;
			
			for each(var tankXML:XML in corpsXML.tank){
				corpsVO.arrTank.push(this.readTankBornVO(tankXML));
			}
			
			vo.arrCorps.push(corpsVO);
			
			vo.tankCount+=corpsVO.arrTank.length;//记录坦克总量
		}
		
		return vo;
	}

	private function readTankBornVO(x:XML):TankBornVO{
		var vo:TankBornVO=new TankBornVO();
		vo.aiMetaID=parseInt(x.@ai_id);
		vo.bodyMetaID=parseInt(x.@body_id);
		vo.bornPosiID=parseInt(x.@born_posi_id);
		vo.bornTimeGap=parseInt(x.@born_time_gap);
		
		return vo;
	}
}//end of class
}
